/*
Vue-Cli脚手架
  什么是Vue脚手架：
    之前我们使用Vue框架，都是通过脚本的方式引入Vue脚本，在html中运行，但是这只是入门级的操作，下面我们介绍Vue脚手架。
    脚手架：脚手架是一类软件的总称，此类软甲用于生成标准化的项目包，这种项目包具备完善的模块，报错提示，代码提示...
    并且，脚手架是一套已经包含核心功能和标准文件夹结构的半成品项目源代码，它的优点是标准化，极其便于协作，避免重复搭结构，降低学习成本。在今后所有的项目和新技术，基本都是在脚手架基础上开发的

安装脚手架：
   npm i -g @vue/cli


脚手架创建项目结构：
    ── node_modules
    ├── public
    │ ├── favicon.ico: 页签图标
    │ └── index.html: 主页面
    ├── -src
    │ ├── assets: 存放静态资源
    │ │ └── logo.png
    │ │── component: 存放组件
    │ │ └── HelloWorld.vue
    │ │── App.vue: 汇总所有组件
    │ │── main.js: 入口文件
    ├── .gitignore: git 版本管制忽略的配置
    ├── babel.config.js: babel 的配置文件
    ├── package.json: 应用包配置文件
    ├── README.md: 应用描述文件
    ├── package-lock.json：包版本控制文件
*/

/*
render()函数：
  render()
- *类型*：`(createElement: () => VNode) => VNode`
- *详细*：
  字符串模板的代替方案，允许你发挥 JavaScript 最大的编程能力。该渲染函数接收一个 `createElement` 方法作为第一个参数用来创建 `VNode`。
  如果组件是一个函数组件，渲染函数还会接收一个额外的 `context` 参数，为没有实例的函数组件提供上下文信息。
  Vue 选项中的 `render` 函数若存在，则 Vue 构造函数不会从 `template` 选项或通过 `el` 选项指定的挂载元素中提取出的 HTML 模板编译渲染函数。

       new Vue({
        router,
        store,
        //render: h => h(App)
          render(createElement){
              return createElement(App)
          }
      }).$mount('#app')
 */

/*
Vue版本问题：
关于不同版本的Vue:
1.vue.js与vue.runtime.xxx.js的区别:
    (1).vue.js是完整版的Vue，包含:核心功能+模板解析器。
    (2).vue.runtime.xxx.js是运行版的Vue，只包含: 核心功能;没有模板解析器.
2.因为vue.runtime.xxx.js没有模板解析器，所以不能使用template配置项，需要使用render函数接收到的createElement函数夫指定具体内容
*/

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
